package com.example.lock.annotation;

import java.lang.annotation.*;

/**
 * <p>Description: </p>
 *
 * @author zg
 * @version v1.0.0
 * @since 2024/8/21
 **/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConcurrentLock {

    String key() default "";

    /**
     * 锁的key
     * @return
     */
    String[] values() default "";

    /**
     * 是否公平锁
     * @return
     */
    boolean isFairLock() default false;

    /**
     * tryLock最多等待时间（单位：秒。默认30秒）
     * 小于1时不等待（即不使用tryLock）
     * @return
     */
    int waitingTime() default 30;

    /**
     * 上锁后多久解锁（单位：秒。默认30秒）
     * @return
     */
    int leaseTime() default 30;

}
